package com.cskaoyan.mapper;

import com.cskaoyan.bean.User;
import org.apache.ibatis.annotations.ConstructorArgs;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

/**
 * 创建日期: 2022/10/14 16:14
 *
 * @author ciggar
 */
public interface UserMapper {

    // 一个简单参数
    User selectUserById(@Param("id") Integer id);

    // 通过 ${} 来取值
    User selectUserById$(@Param("id") Integer id);


    // 多个简单参数
    int insertUser(@Param("uid") Integer id,
                   @Param("name") String name,
                   @Param("age") Integer age,
                   @Param("nick") String nickname);


    // 传入对象  没有注解
    int insertUserThrowObject(User user);


    // 传入对象  有注解
    int insertUserThrowObject2(@Param("u") User user);

    // 练习
    int updateUserById(@Param("user") User user,@Param("id") Integer id);


    // 传入map    // 假如map中传入的是id和name
    User selectUserByMap(Map map);

    // 传入map    // 假如map中传入的是id和name
    User selectUserByMapWithAnnotation(@Param("map") Map map);


    // 按位置取值
    int insertUserByIndex(Integer id,String name,Integer age,String nickname);


    // 使用 #{} 来取值
    User selectUserByName(@Param("name") String name);

    // 使用 ${} 来取值
    User selectUserByName$(@Param("name") String name);



    // 传入表名
    User selectUserByIdAndTableName(@Param("id") Integer id,@Param("tableName") String tableName);


    // 传入列名
    User selectUserByColumnNameOrderBy(@Param("columnName") String columnName);

}
